package wicket;

import model.Wasd;

import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.spring.injection.annot.SpringBean;

public class Index extends WebPage{
	private static final long serialVersionUID = 1L;
	private String texto, resultado;
	@SpringBean(name="wasd")
	private Wasd wasd;
	
	public Index(PageParameters parameters) {
		texto = resultado = "";
		Form<Void> form = new Form<Void>("form");
		form.add(
			texto(),
			hacerAlgo(),
			metodoPrivado(),
			metodoConParametro(),
			label()
		);
		add(form);
	}

	private Component label() {
		PropertyModel<String> bindeo = new PropertyModel<String>(this, "resultado");
		return new Label("label", bindeo);
	}

	private Component metodoConParametro() {
		return new AjaxSubmitLink("metodoConParametro") {
			private static final long serialVersionUID = 1L;

			@Override
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				setResultado(wasd.metodoConParametro(texto));
				setResponsePage(getPage());
			}

			@Override
			protected void onError(AjaxRequestTarget target, Form<?> form) {}
		};
	}

	private Component metodoPrivado() {
		return new AjaxSubmitLink("metodoPrivado") {
			private static final long serialVersionUID = 1L;

			@Override
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				setResultado(wasd.buscarMetodoPrivado());
				setResponsePage(getPage());
			}

			@Override
			protected void onError(AjaxRequestTarget target, Form<?> form) {
				// TODO Auto-generated method stub
				
			}
		};
	}

	private Component hacerAlgo() {
		return new AjaxSubmitLink("hacerAlgo") {
			private static final long serialVersionUID = 1L;

			@Override
			protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
				setResultado(wasd.hacerAlgo());
				setResponsePage(getPage());
			}

			@Override
			protected void onError(AjaxRequestTarget target, Form<?> form) {
				// TODO Auto-generated method stub
				
			}
		};
	}

	private Component texto() {
		PropertyModel<String> bindeo = new PropertyModel<String>(this, "texto");
		return new TextField<String>("texto", bindeo);
	}

	
	//getters&&setters
	public void setTexto(String texto) {
		this.texto = texto;
	}

	public String getTexto() {
		return texto;
	}

	public void setResultado(String resultado) {
		this.resultado = resultado;
	}

	public String getResultado() {
		return resultado;
	}
}
